INEG 22203 - Final Project (Travel Buddy)

posts
analysis
Author

Molly Lingenfelter, Samantha Kollasch, and Diana Batista Peralta

Published

April 30, 2025

Travel Buddy

Project Summary & Skills Used

The Travel Buddy application is a web based travel planning system designed to help users efficiently plan trips based on their preferences for cost and travel duration. The system allows users to select between one-way, round-trip, and multi-city travel options, input departure and arrival locations using IATA airport codes, and choose travel dates. Based on this input, the application generates optimized travel results and provides users with relevant flight and hotel recommendations.

This project was a completed as a team effort. My teammates Samantha Kollasch and Diana Batista Peralta (All of our E-Portfolios are linked below). While we collaborated closely on development, each team member contributed to different aspects of the project.

E-Portfolios:

Molly Lingenfelter’s E-Portfolio

Diana Batista Peralta’s E-Portfolio

Samantha Kollasch’s E-Portfolio

The purpose of this project was to simulate a real-world travel optimization tool that integrates data processing, user interface design, and decision making logic. The application incorporates concepts from industrial engineering, particularly optimization by allowing users to prioritize minimizing cost or minimizing travel time. This reflects real-world decision-making problems where we have multiple competing objectives that have to be balanced out.

Throughout this project, I developed and applied several important skills I have learned in this class. These skills included working with ArrayLists and handling file inputs and outputs, and integrating Vaadin for the design of the application, using OpenCSV for data processing. Additionally, I learned how to integrate APIs and handle the JSON data.

Project Development

The original proposal for Travel Buddy focused on solving a common problem of the difficulty of planning multi-city travel using multiple platforms. Our goal was to create a single system that could identify the cheapest transportation options and determine the most efficient route between cities in Europe. This idea was motivated by our own experiences, as some of our group members are studying abroad this summer and wanted a tool that could simplify travel planning.

In the initial design, we planned to implement several advanced features, including route optimization using Google OR-Tools, activity recommendations, and a visual map displaying suggested locations. We also intended to incorporate a scoring system that would balance cost and travel time, allowing users to customize their preferences. Additionally, we proposed integrating a flight cost tracking API to provide real-time data and support dynamic travel decisions.

As development progressed, the scope of the project evolved. At the beginning, our focus was primarily on building a system centered around flight recommendations. However, as we continued developing, we recognized that a complete travel planning tool should also include accommodations. As a result, we expanded the project to incorporate hotel recommendations, which made the application more practical and aligned with real-world travel needs.

Another major shift was moving toward a more user-friendly interface using Vaadin. Instead of focusing only on back-end logic, we prioritized creating a clean and interactive experience where users could easily input travel details and understand their results. This required restructuring parts of our code and improving how data was shared across different components of the application.

Throughout the development process, our team encountered several challenges that influenced the direction of the project. Integrating APIs and handling JSON data proved to be more complex than expected, especially when dealing with missing or inconsistent data fields. This required significant debugging and adjustments to our data-handling methods. Additionally, ensuring that information flowed correctly between different pages of the application led us to refactor our code into more reusable and organized components.

The final version of the project reflects these changes. While we did not implement every feature from our original proposal, such as full map visualization or detailed activity suggestions, we successfully developed a functional system that integrates flight and hotel data, processes user input, and generates meaningful travel recommendations. Overall, the project evolved from an ambitious concept into a more focused and practical application, demonstrating our ability to adapt, prioritize, and deliver a working solution.

Features & Highlights

One of the most significant features of Travel Buddy is the integration of external data through the Flight_API and Hotel_API methods, which utilize SerpAPI for Google Flights and Google Hotels data. I contributed to developing the base structure for reading and processing data from the Flight API, which involved handling API requests and converting JSON responses into usable Java objects. This provided the foundation for retrieving flight information and integrating it into the system, enabling the application to generate structured and meaningful travel results for users.

In addition, I was primarily responsible for the development and implementation of the Hotel_API. This included retrieving hotel data, parsing JSON responses, handling inconsistencies in the data, and structuring the results so they could be effectively used within the application. This feature was important because it expanded the functionality of the project beyond transportation, allowing users to also view accommodation options.

Another key highlight is the hotel recommendation, which I designed and integrated into the Vaadin interface. The system displays a top hotel recommendation with a descriptive summary, followed by additional hotel options organized in a grid layout. I focused on ensuring that the data was clearly presented and easy for users to interact with, improving the overall usability.

Image of hotel recommendations in Vaadin

I also contributed to the Vaadin user interface integration, particularly in displaying hotel data within the application. This involved organizing layouts, connecting API data to Vaadin components, and ensuring that outputs were structured and user-friendly. This work was important because it connected the technical functionality with the user experience.

Additionally, the project includes a travel scoring system that evaluates options based on user preferences for cost versus duration. While this was a team effort, it enhances the usefulness of the API data by helping users interpret and compare results.

Overall, these features highlight the combination of development and integration. My contributions, especially to the Hotel API and user interface, played a key role in making the application both functional and practical for users.

Reflection on Project

This project helped me strengthen my understanding of computing and how different parts of an application work together. I became more comfortable organizing code, managing data flow, and connecting The back-end logic to user interface (Vaadin). One of the most valuable parts of this experience was working with APIs and learning how to handle and process JSON data.

My main contributions included developing the Hotel_API, building the base for the Flight_API, and integrating hotel data into the Vaadin interface. I am especially proud of the Hotel API because it required a lot of problem solving, debugging, and handling of data. This experience improved my ability to troubleshoot issues and think through more complex problems.

Overall, I grew as both a programmer and a teammate. I now feel more confident working with APIs, integrating multiple technologies, and building a functional application from start to finish!